package com.zhengsr.corelib.net;


import com.zhengsr.corelib.bean.ArticleCollectBean;
import com.zhengsr.corelib.bean.NaviData;
import com.zhengsr.corelib.bean.BannerBean;
import com.zhengsr.corelib.bean.BaseResponse;
import com.zhengsr.corelib.bean.KnowTreeBean;
import com.zhengsr.corelib.bean.LogUpBean;
import com.zhengsr.corelib.bean.LoginBean;

import java.util.List;
import java.util.Map;

import io.reactivex.Observable;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Path;
import retrofit2.http.Query;
import retrofit2.http.QueryMap;
import retrofit2.http.Url;

/**
 * Created by zhengshaorui
 * Time on 2018/8/14
 * retrofit 不能穿泛型，所以这用国际通用类型 String
 */

public interface HttpServiceApi {

    @GET
    Observable<String> get(@Url String url, @QueryMap Map<String, Object> map);



    //玩 android  api

    /**
     * 获取banner数据
     * @return
     */
    @GET("banner/json")
    Observable<BaseResponse<List<BannerBean>>> getBannerData();

    /**
     * 获取文章列表
     * @param page 表示当前页数
     * @return
     */
    @GET("article/list/{page}/json")
    Observable<BaseResponse<ArticleCollectBean>> getArticleData(@Path("page") int page);

    /**
     * 登录数据
     * @param username
     * @param password
     * @return
     */
    @POST("user/login")
    @FormUrlEncoded
    Observable<BaseResponse<LoginBean>> loginIn(@Field("username") String username, @Field("password") String password);

    /**
     * 退出登录
     * @return
     */
    @GET("user/logout/json")
    Observable<BaseResponse<ArticleCollectBean>> loginOut();

    /**
     * 注册
     * @param username
     * @param password
     * @param repassword
     * @return
     */
    @POST("user/register")
    @FormUrlEncoded
    Observable<BaseResponse<LogUpBean>> register(@Field("username") String username,@Field("password")
            String password,@Field("repassword") String repassword);


    /**
     * 获取收藏列表
     * @return
     */
    @GET("lg/collect/list/{page}/json")
    Observable<BaseResponse<ArticleCollectBean>> getCollectList(@Path("page") int page);

    /**
     * 收藏文章
     */
    @POST("lg/collect/{id}/json")
    Observable<BaseResponse<ArticleCollectBean>> addCollectArticle(@Path("id") int id);

    /**
     * 取消收藏
     */
    @POST("lg/uncollect_originId/{id}/json")
    Observable<BaseResponse<BaseResponse>> cancleCollectAricle(@Path("id") int id);

    /**
     * 获取知识体系
     */
    @GET("tree/json")
    Observable<BaseResponse<List<KnowTreeBean>>> getKnowTree();

    /**
     * 知识体系下的文章
     * http://www.wanandroid.com/article/list/0?cid=60
     *
     * @param page page num
     * @param cid second page id
     * @return 知识体系feed文章数据
     */
    @GET("article/list/{page}/json")
    Observable<BaseResponse<ArticleCollectBean>> getDetailKnowledge(@Path("page") int page, @Query("cid") int cid);

    /**
     * 获取导航数据
     * http://www.wanandroid.com/navi/json
     * @return
     */
    @GET("navi/json")
    Observable<BaseResponse<List<NaviData>>> getNaviData();


}
